#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N=1e3+10;

int f[N];
int p[N];
int cnt[N];
int Find(int x)
{
	if(f[x]!=x)
	{
		f[x]=Find(f[x]);
	}
	return f[x];
}
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
		f[i]=i;
	for(int i=1;i<=n;i++)
	{
		int t;
		char slit;
		cin>>t>>slit;
		while(t--)
		{
			int tp;
			scanf("%d",&tp);
			if(p[tp])
			{
				f[Find(i)]=Find(p[tp]);
			}
			else{
				p[tp]=i;
			}
		}
	}
	vector<int> ret;
	for(int i=1;i<=n;i++)
	{
		cnt[Find(i)]++;
	}
	for(int i=1;i<=n;i++)
	{
		if(cnt[i])
		{
			ret.push_back(cnt[i]);
		}
	}
	cout<<ret.size()<<endl;
	sort(ret.begin(),ret.end());
	
	for(int i=ret.size()-1;i>=0;i--)
	{
		if(i!=ret.size()-1)
		{
			cout<<' '<<ret[i];
		}
		else{
			cout<<ret[i];
		}
	}
	return 0;
}
